//
//  UILabel+ZKChain.h
//  ChainFun
//
//  Created by 洪绵卫 on 2022/1/10.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/*
     所有函数均只有getter函数.
     zk_frame 对应的 frame属性 其余一样，去除zk_ 后边的为对应的属性名
 */
@interface UILabel (ZKChain)

/* 因为父类的Category中返回的是UIView类型，不便于链式继续调用，所以这里写同名的get方法，返回值不同 */

/// 初始化 没有设置Frame
+ (UILabel * _Nonnull (^)(void))zk_allocInit;

/// 带Frame的初始化
+ (UILabel * _Nonnull (^)(CGRect))zk_allocInitWithFrame;

/// 设置View的Frame
- (UILabel * _Nonnull (^)(CGRect))zk_frame;

/// 设置View的背景色
- (UILabel * _Nonnull (^)(UIColor * _Nonnull))zk_backgroundColor;

/// 将View添加到父视图上  
- (UILabel * _Nonnull (^)(UIView * _Nonnull))zk_addToSuperView;

/// 设置View是否允许交互
- (UILabel * _Nonnull (^)(BOOL))zk_userInteractionEnabled;

/// 设置View的Tag
- (UILabel * _Nonnull (^)(NSInteger))zk_tag;

/// 设置View的Bounds
- (UILabel * _Nonnull (^)(CGRect))zk_bounds;

/// 设置View的中心点
- (UILabel * _Nonnull (^)(CGPoint))zk_center;

/// 设置View的透明度
- (UILabel * _Nonnull (^)(CGFloat))zk_alpha;

/// 设置View的隐藏状态
- (UILabel * _Nonnull (^)(BOOL))zk_hidden;

/// 设置View的TitColor
- (UILabel * _Nonnull (^)(UIColor * _Nonnull))zk_tintColor;


#pragma mark 对应UILabel 的一些属性

/// 设置Lable的文字
- (UILabel * _Nonnull (^)(NSString * _Nullable))zk_text;

/// 设置字体大小
- (UILabel * _Nonnull (^)(UIFont * _Nullable))zk_font;

/// 设置字体颜色
- (UILabel * _Nonnull (^)(UIColor * _Nullable))zk_textColor;

/// 设置阴影颜色
- (UILabel * _Nonnull (^)(UIColor * _Nullable))zk_shadowColor;

/// 设置阴影偏移量
- (UILabel * _Nonnull (^)(CGSize))zk_shadowOffset;

/// 设置字体对齐方式
- (UILabel * _Nonnull (^)(NSTextAlignment))zk_textAlignment;

/// 设置Lable NSLineBreakMode
- (UILabel * _Nonnull (^)(NSLineBreakMode))zk_lineBreakMode;

/// 设置Lable的NSAttributedString
- (UILabel * _Nonnull (^)(NSAttributedString * _Nullable))zk_attributedText;

/// label文本的高亮颜色。
- (UILabel * _Nonnull (^)(UIColor * _Nullable))zk_highlightedTextColor;

/// 决定label是否以启用状态绘制文本
- (UILabel * _Nonnull (^)(BOOL))zk_enabled;

/// 呈现文本的行数
- (UILabel * _Nonnull (^)(NSInteger))zk_numberOfLines;

/// 文本自适应Label
- (UILabel * _Nonnull (^)(BOOL))zk_adjustsFontSizeToFitWidth;

/// 用于控制文本需要缩小以适应标签时文本基线是否保持固定
- (UILabel * _Nonnull (^)(UIBaselineAdjustment))zk_baselineAdjustment;

/// UILabel文本的最小比例因子
- (UILabel * _Nonnull (^)(CGFloat))zk_minimumScaleFactor;

/// 用于确定Label在截断文本之前是否收紧文本
- (UILabel * _Nonnull (^)(BOOL))zk_allowsDefaultTighteningForTruncation;

/// 当布局多行文本时，系统使用的断行策略
- (UILabel * _Nonnull (^)(NSLineBreakStrategy))zk_lineBreakStrategy;

/// 多行标签的首选最大宽度(以点为单位)
- (UILabel * _Nonnull (^)(CGFloat))zk_preferredMaxLayoutWidth;

/// 用于确定当指针悬停在截断的文本上时是否显示标签的全文。
- (UILabel * _Nonnull (^)(BOOL))zk_showsExpansionTextWhenTruncated;

@end

NS_ASSUME_NONNULL_END
